Information technology (IT) professionals are responsible for managing computational resources for enterprises. Often such IT professionals are tasked with reducing cost and improving operational efficiency. However, data centers can quickly approach capacity and purchasing new servers increases capital and operating expenses, among other costs. At the same time, servers are typically and substantially underutilized, and provisioning new machines is a lengthy process that makes it difficult to be responsive to rapidly changing business needs.
Virtual machine technology facilitates increased physical resource utilization as well as agile machine provisioning. Traditionally, software applications are tightly coupled to physical servers on which they run. Virtual machine technology provides a layer of abstraction between the software applications and physical hardware and enables provisioning of multiple virtual machines on a single physical server, for example. As a result, workloads can be consolidated to improve physical asset utilization, and machines can be rapidly deployed and decommissioned, as needed.
To facilitate management, it is helpful to provide IT professionals with a means for monitoring resources be they physical, virtual, or both. For instance, metrics concerning performance or fault can be useful determining whether to add, remove, or move a machine. Such information can be acquired by way of application instrumentation.
Conventionally, agents are added to applications that monitor the applications and communicate pertinent information outside the application to management component for further processing. In other words, for each application, an agent is added, and there is a static relationship between an agent and a manager. By way of example, a virtual machine manager on a host server can receive status messages from a virtual machine with respect to an application by way of a local application agent.